#!/usr/bin/env node

/**
 * Rollup配置验证脚本
 * 用于验证动态生成的Rollup配置是否正确
 */

const path = require('path');
const fs = require('fs');

console.log('🚀 Rollup配置验证工具');
console.log('========================\n');

// 加载配置
const configPath = path.resolve(__dirname, './rollup.config.js');
let config;

try {
  config = require(configPath);
  console.log('✅ 成功加载配置文件');
} catch (error) {
  console.error(`❌ 加载配置文件失败: ${error.message}`);
  process.exit(1);
}

// 统计信息
console.log('\n📊 配置统计:');
console.log(`   - 总配置数量: ${config.length}`);

// 按模板分组
const templateGroups = {};
config.forEach(cfg => {
  const match = cfg.input.match(/src\/theme\/([^/]+)\//);
  if (match) {
    const template = match[1];
    if (!templateGroups[template]) {
      templateGroups[template] = [];
    }
    templateGroups[template].push(cfg);
  }
});

console.log(`   - 涉及模板数量: ${Object.keys(templateGroups).length}`);

// 详细分析
console.log('\n🔍 详细分析:');
Object.entries(templateGroups).forEach(([template, configs]) => {
  console.log(`\n📁 模板: ${template}`);
  console.log(`   配置数量: ${configs.length}`);

  configs.forEach(cfg => {
    const inputName = path.basename(path.dirname(cfg.input));
    const outputName = path.basename(cfg.output.file);
    console.log(`   - ${inputName} → ${outputName}`);
  });
});

// 验证文件存在性
console.log('\n✅ 文件存在性检查:');
let missingFiles = 0;
config.forEach(cfg => {
  if (!fs.existsSync(cfg.input)) {
    console.log(`   ❌ 缺失: ${cfg.input}`);
    missingFiles++;
  }
});

if (missingFiles === 0) {
  console.log('   ✅ 所有输入文件都存在');
} else {
  console.log(`   ⚠️  发现 ${missingFiles} 个缺失文件`);
}

// 输出目录检查
console.log('\n📂 输出目录检查:');
const outputDirs = new Set();
config.forEach(cfg => {
  const outputDir = path.dirname(cfg.output.file);
  outputDirs.add(outputDir);
});

outputDirs.forEach(dir => {
  const fullPath = path.resolve(__dirname, '..', dir);
  if (fs.existsSync(fullPath)) {
    console.log(`   ✅ ${dir}`);
  } else {
    console.log(`   ⚠️  ${dir} (需要创建)`);
  }
});

console.log('\n🎉 验证完成！');
console.log('\n💡 使用提示:');
console.log('   - 运行构建: npx rollup -c scripts/rollup.config.js');
console.log('   - 开发模式: node scripts/rollup-watch.js');
console.log('   - 查看帮助: node scripts/validate-rollup-config.js');
